<?php
/*
 * Copyright (c) 2017-2025 Tencent. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *    http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
namespace TencentCloud\Redis\V20180412\Models;
use TencentCloud\Common\AbstractModel;

/**
 * DescribeInstanceDTSInfo response structure.
 *
 * @method string getJobId() Obtain DTS task ID.
 * @method void setJobId(string $JobId) Set DTS task ID.
 * @method string getJobName() Obtain DTS task name.
 * @method void setJobName(string $JobName) Set DTS task name.
 * @method integer getStatus() Obtain Task status. 1: creating (Creating); 3: checking (Checking); 4: check successful (CheckPass); 5: check failed (CheckNotPass); 7: task running (Running); 8: preparation completed (ReadyComplete); 9: task successful (Success); 10: task failed (Failed); 11: stopping (Stopping); 12: completing (Completing).
 * @method void setStatus(integer $Status) Set Task status. 1: creating (Creating); 3: checking (Checking); 4: check successful (CheckPass); 5: check failed (CheckNotPass); 7: task running (Running); 8: preparation completed (ReadyComplete); 9: task successful (Success); 10: task failed (Failed); 11: stopping (Stopping); 12: completing (Completing).
 * @method string getStatusDesc() Obtain Status description.
 * @method void setStatusDesc(string $StatusDesc) Set Status description.
 * @method integer getOffset() Obtain Synchronization delay. Unit: bytes.
 * @method void setOffset(integer $Offset) Set Synchronization delay. Unit: bytes.
 * @method string getCutDownTime() Obtain Disconnection time.
 * @method void setCutDownTime(string $CutDownTime) Set Disconnection time.
 * @method DescribeInstanceDTSInstanceInfo getSrcInfo() Obtain Source instance information.
 * @method void setSrcInfo(DescribeInstanceDTSInstanceInfo $SrcInfo) Set Source instance information.
 * @method DescribeInstanceDTSInstanceInfo getDstInfo() Obtain Destination instance information.
 * @method void setDstInfo(DescribeInstanceDTSInstanceInfo $DstInfo) Set Destination instance information.
 * @method string getRequestId() Obtain The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
 * @method void setRequestId(string $RequestId) Set The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
 */
class DescribeInstanceDTSInfoResponse extends AbstractModel
{
    /**
     * @var string DTS task ID.
     */
    public $JobId;

    /**
     * @var string DTS task name.
     */
    public $JobName;

    /**
     * @var integer Task status. 1: creating (Creating); 3: checking (Checking); 4: check successful (CheckPass); 5: check failed (CheckNotPass); 7: task running (Running); 8: preparation completed (ReadyComplete); 9: task successful (Success); 10: task failed (Failed); 11: stopping (Stopping); 12: completing (Completing).
     */
    public $Status;

    /**
     * @var string Status description.
     */
    public $StatusDesc;

    /**
     * @var integer Synchronization delay. Unit: bytes.
     */
    public $Offset;

    /**
     * @var string Disconnection time.
     */
    public $CutDownTime;

    /**
     * @var DescribeInstanceDTSInstanceInfo Source instance information.
     */
    public $SrcInfo;

    /**
     * @var DescribeInstanceDTSInstanceInfo Destination instance information.
     */
    public $DstInfo;

    /**
     * @var string The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
     */
    public $RequestId;

    /**
     * @param string $JobId DTS task ID.
     * @param string $JobName DTS task name.
     * @param integer $Status Task status. 1: creating (Creating); 3: checking (Checking); 4: check successful (CheckPass); 5: check failed (CheckNotPass); 7: task running (Running); 8: preparation completed (ReadyComplete); 9: task successful (Success); 10: task failed (Failed); 11: stopping (Stopping); 12: completing (Completing).
     * @param string $StatusDesc Status description.
     * @param integer $Offset Synchronization delay. Unit: bytes.
     * @param string $CutDownTime Disconnection time.
     * @param DescribeInstanceDTSInstanceInfo $SrcInfo Source instance information.
     * @param DescribeInstanceDTSInstanceInfo $DstInfo Destination instance information.
     * @param string $RequestId The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
     */
    function __construct()
    {

    }

    /**
     * For internal only. DO NOT USE IT.
     */
    public function deserialize($param)
    {
        if ($param === null) {
            return;
        }
        if (array_key_exists("JobId",$param) and $param["JobId"] !== null) {
            $this->JobId = $param["JobId"];
        }

        if (array_key_exists("JobName",$param) and $param["JobName"] !== null) {
            $this->JobName = $param["JobName"];
        }

        if (array_key_exists("Status",$param) and $param["Status"] !== null) {
            $this->Status = $param["Status"];
        }

        if (array_key_exists("StatusDesc",$param) and $param["StatusDesc"] !== null) {
            $this->StatusDesc = $param["StatusDesc"];
        }

        if (array_key_exists("Offset",$param) and $param["Offset"] !== null) {
            $this->Offset = $param["Offset"];
        }

        if (array_key_exists("CutDownTime",$param) and $param["CutDownTime"] !== null) {
            $this->CutDownTime = $param["CutDownTime"];
        }

        if (array_key_exists("SrcInfo",$param) and $param["SrcInfo"] !== null) {
            $this->SrcInfo = new DescribeInstanceDTSInstanceInfo();
            $this->SrcInfo->deserialize($param["SrcInfo"]);
        }

        if (array_key_exists("DstInfo",$param) and $param["DstInfo"] !== null) {
            $this->DstInfo = new DescribeInstanceDTSInstanceInfo();
            $this->DstInfo->deserialize($param["DstInfo"]);
        }

        if (array_key_exists("RequestId",$param) and $param["RequestId"] !== null) {
            $this->RequestId = $param["RequestId"];
        }
    }
}
